조인순서의 조정으로 소트회피 :: 오라클 실습[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

오라클 실습
[1]
등록일:2009-05-28 00:16:08 (0%)
작성자:
제목:조인순서의 조정으로 소트회피
조인이  풀리는  테이블의  순서를  조정함으로서  소트된  결과를  구할  수  있다.
인덱스가  이미  소트되어  있다.    Order  by문의  컬럼순서  대로  인덱스를  만든다.  또한  From절의  먼순서부터  풀리므로  테이블의  순서를  조정하여  먼저  풀려야할  테이블을  조정한다.

  데이터복제를  이용한  Summery정보  계산

어떤  지점의  수신,  여신,  신탁총액을  구한다.

Select  b.br_no,  b.br_name,  sum(a.r_amt),  sum(a.a_amt),  sum(a.i_amt)
From  daily_trans  a,  branch  b
Where  a.br_no  =  b.br_no  and  a.saledate  =  :saledate
Group  by  b.br_no,  b.br_name

이  sql은  조인을  먼저한  후  그  결과를  Group  by하므로  횟수가  a.br_no  =  b.br_no건  수  만큼이나  된다.  그러나  Group  by를  먼저하고  그  결과를  조인하면  성능이  향상된다.

Select  b.br_no,  b.br_name,  ramt,  aamt,  iamt
From  (select  br_no,
                    Sum(r_amt)  as  ramt,
                    Sum(a_amt)  as  aamt,
                    Sum(I_amt)  as  iamt,
                    From  daily_tans  
                    where  saledate  =  :saledate
                  Group  by  br_no)  v,  branch  b
Where  v.br_no  =  b.br_no;

전체총계와  함께  나오는  sql
Select  b.br_no,  b.br_name,  ramt,  aamt,  iamt
From  (select  br_no,
            Sum(r_amt)  as  ramt,
            Sum(a_amt)  as  aamt,
            Sum(I_amt)  as  iamt,
            From  daily_tans  
            where  saledate  =  :saledate
            Group  by  br_no
            Union  all
            Select  ‘total’  as  br_no,  sum(r_amt)  as  ramt,
            Sum(a_amt)  as  aamt,
            Sum(I_amt)  as  iamt,
            From  daily_tans  where  saledate  =  :saledate
            where  saledate  =  :saledate)  v,  
branch  b
where  v.br_no  =  b.br_no(+);

-  tip
모델링시  슈퍼-서브타입의  경우  분리를  할  경우는  양쪽모두를  체크해야  하는데  이는  or,  union,  union  all등을  써야  하기  때문에  성능을  저하시킨다.

  반정규화

코드테이블이  분리되어  있어서  조인이  이루어  지는데  예를들어  지역별  날짜별  어떤  합계를  구하려한다면  없는  국가코드를  조인해야  함으로(outer  join)부담이  된다.  이를  해결하기  위해서  코드  테이블을  분리하고  이에대한  코드,  코드이름을  관련된  테이블에  중복시키다.

  
[본문링크] 조인순서의 조정으로 소트회피
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=31502
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.